home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / CIncludes / QD3DGeometry.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  62.9 KB  |  2,115 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QD3DGeometry.h
  3.  
  4.      Contains:    Q3Geometry methods                                        
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DGEOMETRY__
  18. #define __QD3DGEOMETRY__
  19.  
  20. #ifndef __QD3D__
  21. #include <QD3D.h>
  22. #endif
  23.  
  24. #ifndef __QD3DSET__
  25. #include <QD3DSet.h>
  26. #endif
  27.  
  28.  
  29.  
  30. #if PRAGMA_ONCE
  31. #pragma once
  32. #endif
  33.  
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37.  
  38. #if PRAGMA_IMPORT
  39. #pragma import on
  40. #endif
  41.  
  42. #if PRAGMA_STRUCT_ALIGN
  43.     #pragma options align=power
  44. #elif PRAGMA_STRUCT_PACKPUSH
  45.     #pragma pack(push, 2)
  46. #elif PRAGMA_STRUCT_PACK
  47.     #pragma pack(2)
  48. #endif
  49.  
  50. #if PRAGMA_ENUM_ALWAYSINT
  51.     #pragma enumsalwaysint on
  52. #elif PRAGMA_ENUM_OPTIONS
  53.     #pragma option enum=int
  54. #elif PRAGMA_ENUM_PACK
  55.     #if __option(pack_enums)
  56.         #define PRAGMA_ENUM_PACK__QD3DGEOMETRY__
  57.     #endif
  58.     #pragma options(!pack_enums)
  59. #endif
  60.  
  61. /******************************************************************************
  62.  **                                                                             **
  63.  **                                Geometry Routines                             **
  64.  **                                                                             **
  65.  *****************************************************************************/
  66. EXTERN_API_C( TQ3ObjectType )
  67. Q3Geometry_GetType                (TQ3GeometryObject         geometry);
  68.  
  69. EXTERN_API_C( TQ3Status )
  70. Q3Geometry_GetAttributeSet        (TQ3GeometryObject         geometry,
  71.                                  TQ3AttributeSet *        attributeSet);
  72.  
  73. EXTERN_API_C( TQ3Status )
  74. Q3Geometry_SetAttributeSet        (TQ3GeometryObject         geometry,
  75.                                  TQ3AttributeSet         attributeSet);
  76.  
  77. EXTERN_API_C( TQ3Status )
  78. Q3Geometry_Submit                (TQ3GeometryObject         geometry,
  79.                                  TQ3ViewObject             view);
  80.  
  81.  
  82.  
  83. /******************************************************************************
  84.  **                                                                             **
  85.  **                            Box    Data Structure Definitions                     **
  86.  **                                                                             **
  87.  *****************************************************************************/
  88.  
  89. struct TQ3BoxData {
  90.     TQ3Point3D                         origin;
  91.     TQ3Vector3D                     orientation;
  92.     TQ3Vector3D                     majorAxis;
  93.     TQ3Vector3D                     minorAxis;
  94.     TQ3AttributeSet *                faceAttributeSet;            /* Ordering : Left, right,     */
  95.                                                                 /*              front, back,     */
  96.                                                                 /*              top, bottom    */
  97.     TQ3AttributeSet                 boxAttributeSet;
  98. };
  99. typedef struct TQ3BoxData                TQ3BoxData;
  100.  
  101. /******************************************************************************
  102.  **                                                                             **
  103.  **                                Box Routines                                 **
  104.  **                                                                             **
  105.  *****************************************************************************/
  106. EXTERN_API_C( TQ3GeometryObject )
  107. Q3Box_New                        (const TQ3BoxData *        boxData);
  108.  
  109. EXTERN_API_C( TQ3Status )
  110. Q3Box_Submit                    (const TQ3BoxData *        boxData,
  111.                                  TQ3ViewObject             view);
  112.  
  113. EXTERN_API_C( TQ3Status )
  114. Q3Box_SetData                    (TQ3GeometryObject         box,
  115.                                  const TQ3BoxData *        boxData);
  116.  
  117. EXTERN_API_C( TQ3Status )
  118. Q3Box_GetData                    (TQ3GeometryObject         box,
  119.                                  TQ3BoxData *            boxData);
  120.  
  121. EXTERN_API_C( TQ3Status )
  122. Q3Box_EmptyData                    (TQ3BoxData *            boxData);
  123.  
  124. EXTERN_API_C( TQ3Status )
  125. Q3Box_SetOrigin                    (TQ3GeometryObject         box,
  126.                                  const TQ3Point3D *        origin);
  127.  
  128. EXTERN_API_C( TQ3Status )
  129. Q3Box_SetOrientation            (TQ3GeometryObject         box,
  130.                                  const TQ3Vector3D *    orientation);
  131.  
  132. EXTERN_API_C( TQ3Status )
  133. Q3Box_SetMajorAxis                (TQ3GeometryObject         box,
  134.                                  const TQ3Vector3D *    majorAxis);
  135.  
  136. EXTERN_API_C( TQ3Status )
  137. Q3Box_SetMinorAxis                (TQ3GeometryObject         box,
  138.                                  const TQ3Vector3D *    minorAxis);
  139.  
  140. EXTERN_API_C( TQ3Status )
  141. Q3Box_GetOrigin                    (TQ3GeometryObject         box,
  142.                                  TQ3Point3D *            origin);
  143.  
  144. EXTERN_API_C( TQ3Status )
  145. Q3Box_GetOrientation            (TQ3GeometryObject         box,
  146.                                  TQ3Vector3D *            orientation);
  147.  
  148. EXTERN_API_C( TQ3Status )
  149. Q3Box_GetMajorAxis                (TQ3GeometryObject         box,
  150.                                  TQ3Vector3D *            majorAxis);
  151.  
  152. EXTERN_API_C( TQ3Status )
  153. Q3Box_GetMinorAxis                (TQ3GeometryObject         box,
  154.                                  TQ3Vector3D *            minorAxis);
  155.  
  156. EXTERN_API_C( TQ3Status )
  157. Q3Box_GetFaceAttributeSet        (TQ3GeometryObject         box,
  158.                                  unsigned long             faceIndex,
  159.                                  TQ3AttributeSet *        faceAttributeSet);
  160.  
  161. EXTERN_API_C( TQ3Status )
  162. Q3Box_SetFaceAttributeSet        (TQ3GeometryObject         box,
  163.                                  unsigned long             faceIndex,
  164.                                  TQ3AttributeSet         faceAttributeSet);
  165.  
  166.  
  167.  
  168. /******************************************************************************
  169.  **                                                                             **
  170.  **                        Cone Data Structure Definitions                          **
  171.  **                                                                             **
  172.  *****************************************************************************/
  173.  
  174. struct TQ3ConeData {
  175.     TQ3Point3D                         origin;
  176.     TQ3Vector3D                     orientation;
  177.     TQ3Vector3D                     majorRadius;
  178.     TQ3Vector3D                     minorRadius;
  179.     float                             uMin;
  180.     float                             uMax;
  181.     float                             vMin;
  182.     float                             vMax;
  183.     TQ3EndCap                         caps;
  184.     TQ3AttributeSet                 interiorAttributeSet;
  185.     TQ3AttributeSet                 faceAttributeSet;
  186.     TQ3AttributeSet                 bottomAttributeSet;
  187.     TQ3AttributeSet                 coneAttributeSet;
  188. };
  189. typedef struct TQ3ConeData                TQ3ConeData;
  190. /******************************************************************************
  191.  **                                                                             **
  192.  **                                Cone Routines                                 **
  193.  **                                                                             **
  194.  *****************************************************************************/
  195. EXTERN_API_C( TQ3GeometryObject )
  196. Q3Cone_New                        (const TQ3ConeData *    coneData);
  197.  
  198. EXTERN_API_C( TQ3Status )
  199. Q3Cone_Submit                    (const TQ3ConeData *    coneData,
  200.                                  TQ3ViewObject             view);
  201.  
  202. EXTERN_API_C( TQ3Status )
  203. Q3Cone_SetData                    (TQ3GeometryObject         cone,
  204.                                  const TQ3ConeData *    coneData);
  205.  
  206. EXTERN_API_C( TQ3Status )
  207. Q3Cone_GetData                    (TQ3GeometryObject         cone,
  208.                                  TQ3ConeData *            coneData);
  209.  
  210. EXTERN_API_C( TQ3Status )
  211. Q3Cone_SetOrigin                (TQ3GeometryObject         cone,
  212.                                  const TQ3Point3D *        origin);
  213.  
  214. EXTERN_API_C( TQ3Status )
  215. Q3Cone_SetOrientation            (TQ3GeometryObject         cone,
  216.                                  const TQ3Vector3D *    orientation);
  217.  
  218. EXTERN_API_C( TQ3Status )
  219. Q3Cone_SetMajorRadius            (TQ3GeometryObject         cone,
  220.                                  const TQ3Vector3D *    majorRadius);
  221.  
  222. EXTERN_API_C( TQ3Status )
  223. Q3Cone_SetMinorRadius            (TQ3GeometryObject         cone,
  224.                                  const TQ3Vector3D *    minorRadius);
  225.  
  226. EXTERN_API_C( TQ3Status )
  227. Q3Cone_GetOrigin                (TQ3GeometryObject         cone,
  228.                                  TQ3Point3D *            origin);
  229.  
  230. EXTERN_API_C( TQ3Status )
  231. Q3Cone_GetOrientation            (TQ3GeometryObject         cone,
  232.                                  TQ3Vector3D *            orientation);
  233.  
  234. EXTERN_API_C( TQ3Status )
  235. Q3Cone_GetMajorRadius            (TQ3GeometryObject         cone,
  236.                                  TQ3Vector3D *            majorRadius);
  237.  
  238. EXTERN_API_C( TQ3Status )
  239. Q3Cone_GetMinorRadius            (TQ3GeometryObject         cone,
  240.                                  TQ3Vector3D *            minorRadius);
  241.  
  242. EXTERN_API_C( TQ3Status )
  243. Q3Cone_SetCaps                    (TQ3GeometryObject         cone,
  244.                                  TQ3EndCap                 caps);
  245.  
  246. EXTERN_API_C( TQ3Status )
  247. Q3Cone_GetCaps                    (TQ3GeometryObject         cone,
  248.                                  TQ3EndCap *            caps);
  249.  
  250. EXTERN_API_C( TQ3Status )
  251. Q3Cone_SetBottomAttributeSet    (TQ3GeometryObject         cone,
  252.                                  TQ3AttributeSet         bottomAttributeSet);
  253.  
  254. EXTERN_API_C( TQ3Status )
  255. Q3Cone_GetBottomAttributeSet    (TQ3GeometryObject         cone,
  256.                                  TQ3AttributeSet *        bottomAttributeSet);
  257.  
  258. EXTERN_API_C( TQ3Status )
  259. Q3Cone_SetFaceAttributeSet        (TQ3GeometryObject         cone,
  260.                                  TQ3AttributeSet         faceAttributeSet);
  261.  
  262. EXTERN_API_C( TQ3Status )
  263. Q3Cone_GetFaceAttributeSet        (TQ3GeometryObject         cone,
  264.                                  TQ3AttributeSet *        faceAttributeSet);
  265.  
  266. EXTERN_API_C( TQ3Status )
  267. Q3Cone_EmptyData                (TQ3ConeData *            coneData);
  268.  
  269.  
  270.  
  271.  
  272. /******************************************************************************
  273.  **                                                                             **
  274.  **                        Cylinder Data Structure Definitions                     **
  275.  **                                                                             **
  276.  *****************************************************************************/
  277.  
  278. struct TQ3CylinderData {
  279.     TQ3Point3D                         origin;
  280.     TQ3Vector3D                     orientation;
  281.     TQ3Vector3D                     majorRadius;
  282.     TQ3Vector3D                     minorRadius;
  283.     float                             uMin;
  284.     float                             uMax;
  285.     float                             vMin;
  286.     float                             vMax;
  287.     TQ3EndCap                         caps;
  288.     TQ3AttributeSet                 interiorAttributeSet;
  289.     TQ3AttributeSet                 topAttributeSet;
  290.     TQ3AttributeSet                 faceAttributeSet;
  291.     TQ3AttributeSet                 bottomAttributeSet;
  292.     TQ3AttributeSet                 cylinderAttributeSet;
  293. };
  294. typedef struct TQ3CylinderData            TQ3CylinderData;
  295. /******************************************************************************
  296.  **                                                                             **
  297.  **                            Cylinder Routines                                 **
  298.  **                                                                             **
  299.  *****************************************************************************/
  300. EXTERN_API_C( TQ3GeometryObject )
  301. Q3Cylinder_New                    (const TQ3CylinderData * cylinderData);
  302.  
  303. EXTERN_API_C( TQ3Status )
  304. Q3Cylinder_Submit                (const TQ3CylinderData * cylinderData,
  305.                                  TQ3ViewObject             view);
  306.  
  307. EXTERN_API_C( TQ3Status )
  308. Q3Cylinder_SetData                (TQ3GeometryObject         cylinder,
  309.                                  const TQ3CylinderData * cylinderData);
  310.  
  311. EXTERN_API_C( TQ3Status )
  312. Q3Cylinder_GetData                (TQ3GeometryObject         cylinder,
  313.                                  TQ3CylinderData *        cylinderData);
  314.  
  315. EXTERN_API_C( TQ3Status )
  316. Q3Cylinder_SetOrigin            (TQ3GeometryObject         cylinder,
  317.                                  const TQ3Point3D *        origin);
  318.  
  319. EXTERN_API_C( TQ3Status )
  320. Q3Cylinder_SetOrientation        (TQ3GeometryObject         cylinder,
  321.                                  const TQ3Vector3D *    orientation);
  322.  
  323. EXTERN_API_C( TQ3Status )
  324. Q3Cylinder_SetMajorRadius        (TQ3GeometryObject         cylinder,
  325.                                  const TQ3Vector3D *    majorRadius);
  326.  
  327. EXTERN_API_C( TQ3Status )
  328. Q3Cylinder_SetMinorRadius        (TQ3GeometryObject         cylinder,
  329.                                  const TQ3Vector3D *    minorRadius);
  330.  
  331. EXTERN_API_C( TQ3Status )
  332. Q3Cylinder_GetOrigin            (TQ3GeometryObject         cylinder,
  333.                                  TQ3Point3D *            origin);
  334.  
  335. EXTERN_API_C( TQ3Status )
  336. Q3Cylinder_GetOrientation        (TQ3GeometryObject         cylinder,
  337.                                  TQ3Vector3D *            orientation);
  338.  
  339. EXTERN_API_C( TQ3Status )
  340. Q3Cylinder_GetMajorRadius        (TQ3GeometryObject         cylinder,
  341.                                  TQ3Vector3D *            majorRadius);
  342.  
  343. EXTERN_API_C( TQ3Status )
  344. Q3Cylinder_GetMinorRadius        (TQ3GeometryObject         cylinder,
  345.                                  TQ3Vector3D *            minorRadius);
  346.  
  347.  
  348. EXTERN_API_C( TQ3Status )
  349. Q3Cylinder_SetCaps                (TQ3GeometryObject         cylinder,
  350.                                  TQ3EndCap                 caps);
  351.  
  352. EXTERN_API_C( TQ3Status )
  353. Q3Cylinder_GetCaps                (TQ3GeometryObject         cylinder,
  354.                                  TQ3EndCap *            caps);
  355.  
  356.  
  357. EXTERN_API_C( TQ3Status )
  358. Q3Cylinder_SetTopAttributeSet    (TQ3GeometryObject         cylinder,
  359.                                  TQ3AttributeSet         topAttributeSet);
  360.  
  361. EXTERN_API_C( TQ3Status )
  362. Q3Cylinder_GetTopAttributeSet    (TQ3GeometryObject         cylinder,
  363.                                  TQ3AttributeSet *        topAttributeSet);
  364.  
  365. EXTERN_API_C( TQ3Status )
  366. Q3Cylinder_SetBottomAttributeSet (TQ3GeometryObject     cylinder,
  367.                                  TQ3AttributeSet         bottomAttributeSet);
  368.  
  369. EXTERN_API_C( TQ3Status )
  370. Q3Cylinder_GetBottomAttributeSet (TQ3GeometryObject     cylinder,
  371.                                  TQ3AttributeSet *        bottomAttributeSet);
  372.  
  373. EXTERN_API_C( TQ3Status )
  374. Q3Cylinder_SetFaceAttributeSet    (TQ3GeometryObject         cylinder,
  375.                                  TQ3AttributeSet         faceAttributeSet);
  376.  
  377. EXTERN_API_C( TQ3Status )
  378. Q3Cylinder_GetFaceAttributeSet    (TQ3GeometryObject         cylinder,
  379.                                  TQ3AttributeSet *        faceAttributeSet);
  380.  
  381. EXTERN_API_C( TQ3Status )
  382. Q3Cylinder_EmptyData            (TQ3CylinderData *        cylinderData);
  383.  
  384.  
  385.  
  386.  
  387. /******************************************************************************
  388.  **                                                                             **
  389.  **                        Disk Data Structure Definitions                         **
  390.  **                                                                             **
  391.  *****************************************************************************/
  392.  
  393. struct TQ3DiskData {
  394.     TQ3Point3D                         origin;
  395.     TQ3Vector3D                     majorRadius;
  396.     TQ3Vector3D                     minorRadius;
  397.     float                             uMin;
  398.     float                             uMax;
  399.     float                             vMin;
  400.     float                             vMax;
  401.     TQ3AttributeSet                 diskAttributeSet;
  402. };
  403. typedef struct TQ3DiskData                TQ3DiskData;
  404. /******************************************************************************
  405.  **                                                                             **
  406.  **                                Disk Routines                                  **
  407.  **                                                                             **
  408.  *****************************************************************************/
  409. EXTERN_API_C( TQ3GeometryObject )
  410. Q3Disk_New                        (const TQ3DiskData *    diskData);
  411.  
  412. EXTERN_API_C( TQ3Status )
  413. Q3Disk_Submit                    (const TQ3DiskData *    diskData,
  414.                                  TQ3ViewObject             view);
  415.  
  416. EXTERN_API_C( TQ3Status )
  417. Q3Disk_SetData                    (TQ3GeometryObject         disk,
  418.                                  const TQ3DiskData *    diskData);
  419.  
  420. EXTERN_API_C( TQ3Status )
  421. Q3Disk_GetData                    (TQ3GeometryObject         disk,
  422.                                  TQ3DiskData *            diskData);
  423.  
  424. EXTERN_API_C( TQ3Status )
  425. Q3Disk_SetOrigin                (TQ3GeometryObject         disk,
  426.                                  const TQ3Point3D *        origin);
  427.  
  428. EXTERN_API_C( TQ3Status )
  429. Q3Disk_SetMajorRadius            (TQ3GeometryObject         disk,
  430.                                  const TQ3Vector3D *    majorRadius);
  431.  
  432. EXTERN_API_C( TQ3Status )
  433. Q3Disk_SetMinorRadius            (TQ3GeometryObject         disk,
  434.                                  const TQ3Vector3D *    minorRadius);
  435.  
  436. EXTERN_API_C( TQ3Status )
  437. Q3Disk_GetOrigin                (TQ3GeometryObject         disk,
  438.                                  TQ3Point3D *            origin);
  439.  
  440. EXTERN_API_C( TQ3Status )
  441. Q3Disk_GetMajorRadius            (TQ3GeometryObject         disk,
  442.                                  TQ3Vector3D *            majorRadius);
  443.  
  444. EXTERN_API_C( TQ3Status )
  445. Q3Disk_GetMinorRadius            (TQ3GeometryObject         disk,
  446.                                  TQ3Vector3D *            minorRadius);
  447.  
  448.  
  449. EXTERN_API_C( TQ3Status )
  450. Q3Disk_EmptyData                (TQ3DiskData *            diskData);
  451.  
  452.  
  453.  
  454.  
  455. /******************************************************************************
  456.  **                                                                             **
  457.  **                     Ellipse Data Structure Definitions                         **
  458.  **                                                                             **
  459.  *****************************************************************************/
  460.  
  461. struct TQ3EllipseData {
  462.     TQ3Point3D                         origin;
  463.     TQ3Vector3D                     majorRadius;
  464.     TQ3Vector3D                     minorRadius;
  465.     float                             uMin;
  466.     float                             uMax;
  467.     TQ3AttributeSet                 ellipseAttributeSet;
  468. };
  469. typedef struct TQ3EllipseData            TQ3EllipseData;
  470. /******************************************************************************
  471.  **                                                                             **
  472.  **                                Ellipse Routines                             **
  473.  **                                                                             **
  474.  *****************************************************************************/
  475. EXTERN_API_C( TQ3GeometryObject )
  476. Q3Ellipse_New                    (const TQ3EllipseData *    ellipseData);
  477.  
  478. EXTERN_API_C( TQ3Status )
  479. Q3Ellipse_Submit                (const TQ3EllipseData *    ellipseData,
  480.                                  TQ3ViewObject             view);
  481.  
  482. EXTERN_API_C( TQ3Status )
  483. Q3Ellipse_SetData                (TQ3GeometryObject         ellipse,
  484.                                  const TQ3EllipseData *    ellipseData);
  485.  
  486. EXTERN_API_C( TQ3Status )
  487. Q3Ellipse_GetData                (TQ3GeometryObject         ellipse,
  488.                                  TQ3EllipseData *        ellipseData);
  489.  
  490. EXTERN_API_C( TQ3Status )
  491. Q3Ellipse_SetOrigin                (TQ3GeometryObject         ellipse,
  492.                                  const TQ3Point3D *        origin);
  493.  
  494. EXTERN_API_C( TQ3Status )
  495. Q3Ellipse_SetMajorRadius        (TQ3GeometryObject         ellipse,
  496.                                  const TQ3Vector3D *    majorRadius);
  497.  
  498. EXTERN_API_C( TQ3Status )
  499. Q3Ellipse_SetMinorRadius        (TQ3GeometryObject         ellipse,
  500.                                  const TQ3Vector3D *    minorRadius);
  501.  
  502. EXTERN_API_C( TQ3Status )
  503. Q3Ellipse_GetOrigin                (TQ3GeometryObject         ellipse,
  504.                                  TQ3Point3D *            origin);
  505.  
  506. EXTERN_API_C( TQ3Status )
  507. Q3Ellipse_GetMajorRadius        (TQ3GeometryObject         ellipse,
  508.                                  TQ3Vector3D *            majorRadius);
  509.  
  510. EXTERN_API_C( TQ3Status )
  511. Q3Ellipse_GetMinorRadius        (TQ3GeometryObject         ellipse,
  512.                                  TQ3Vector3D *            minorRadius);
  513.  
  514.  
  515. EXTERN_API_C( TQ3Status )
  516. Q3Ellipse_EmptyData                (TQ3EllipseData *        ellipseData);
  517.  
  518.  
  519.  
  520.  
  521. /******************************************************************************
  522.  **                                                                          **
  523.  **                            Ellipsoid Data structures                         **
  524.  **                                                                          **
  525.  *****************************************************************************/
  526.  
  527. struct TQ3EllipsoidData {
  528.     TQ3Point3D                         origin;
  529.     TQ3Vector3D                     orientation;
  530.     TQ3Vector3D                     majorRadius;
  531.     TQ3Vector3D                     minorRadius;
  532.     float                             uMin;
  533.     float                             uMax;
  534.     float                             vMin;
  535.     float                             vMax;
  536.     TQ3EndCap                         caps;
  537.     TQ3AttributeSet                 interiorAttributeSet;
  538.     TQ3AttributeSet                 ellipsoidAttributeSet;
  539. };
  540. typedef struct TQ3EllipsoidData            TQ3EllipsoidData;
  541. /******************************************************************************
  542.  **                                                                          **
  543.  **                            Ellipsoid Routines                                **
  544.  **                                                                          **
  545.  *****************************************************************************/
  546. EXTERN_API_C( TQ3GeometryObject )
  547. Q3Ellipsoid_New                    (const TQ3EllipsoidData * ellipsoidData);
  548.  
  549. EXTERN_API_C( TQ3Status )
  550. Q3Ellipsoid_Submit                (const TQ3EllipsoidData * ellipsoidData,
  551.                                  TQ3ViewObject             view);
  552.  
  553. EXTERN_API_C( TQ3Status )
  554. Q3Ellipsoid_SetData                (TQ3GeometryObject         ellipsoid,
  555.                                  const TQ3EllipsoidData * ellipsoidData);
  556.  
  557. EXTERN_API_C( TQ3Status )
  558. Q3Ellipsoid_GetData                (TQ3GeometryObject         ellipsoid,
  559.                                  TQ3EllipsoidData *        ellipsoidData);
  560.  
  561. EXTERN_API_C( TQ3Status )
  562. Q3Ellipsoid_SetOrigin            (TQ3GeometryObject         ellipsoid,
  563.                                  const TQ3Point3D *        origin);
  564.  
  565. EXTERN_API_C( TQ3Status )
  566. Q3Ellipsoid_SetOrientation        (TQ3GeometryObject         ellipsoid,
  567.                                  const TQ3Vector3D *    orientation);
  568.  
  569. EXTERN_API_C( TQ3Status )
  570. Q3Ellipsoid_SetMajorRadius        (TQ3GeometryObject         ellipsoid,
  571.                                  const TQ3Vector3D *    majorRadius);
  572.  
  573. EXTERN_API_C( TQ3Status )
  574. Q3Ellipsoid_SetMinorRadius        (TQ3GeometryObject         ellipsoid,
  575.                                  const TQ3Vector3D *    minorRadius);
  576.  
  577. EXTERN_API_C( TQ3Status )
  578. Q3Ellipsoid_GetOrigin            (TQ3GeometryObject         ellipsoid,
  579.                                  TQ3Point3D *            origin);
  580.  
  581. EXTERN_API_C( TQ3Status )
  582. Q3Ellipsoid_GetOrientation        (TQ3GeometryObject         ellipsoid,
  583.                                  TQ3Vector3D *            orientation);
  584.  
  585. EXTERN_API_C( TQ3Status )
  586. Q3Ellipsoid_GetMajorRadius        (TQ3GeometryObject         ellipsoid,
  587.                                  TQ3Vector3D *            majorRadius);
  588.  
  589. EXTERN_API_C( TQ3Status )
  590. Q3Ellipsoid_GetMinorRadius        (TQ3GeometryObject         ellipsoid,
  591.                                  TQ3Vector3D *            minorRadius);
  592.  
  593. EXTERN_API_C( TQ3Status )
  594. Q3Ellipsoid_EmptyData            (TQ3EllipsoidData *        ellipsoidData);
  595.  
  596.  
  597.  
  598.  
  599. /******************************************************************************
  600.  **                                                                             **
  601.  **                    General Polygon Data Structure Definitions                 **
  602.  **                                                                             **
  603.  *****************************************************************************/
  604.  
  605. enum TQ3GeneralPolygonShapeHint {
  606.     kQ3GeneralPolygonShapeHintComplex = 0,
  607.     kQ3GeneralPolygonShapeHintConcave = 1,
  608.     kQ3GeneralPolygonShapeHintConvex = 2
  609. };
  610. typedef enum TQ3GeneralPolygonShapeHint TQ3GeneralPolygonShapeHint;
  611.  
  612.  
  613. struct TQ3GeneralPolygonContourData {
  614.     unsigned long                     numVertices;
  615.     TQ3Vertex3D *                    vertices;
  616. };
  617. typedef struct TQ3GeneralPolygonContourData TQ3GeneralPolygonContourData;
  618.  
  619. struct TQ3GeneralPolygonData {
  620.     unsigned long                     numContours;
  621.     TQ3GeneralPolygonContourData *    contours;
  622.     TQ3GeneralPolygonShapeHint         shapeHint;
  623.     TQ3AttributeSet                 generalPolygonAttributeSet;
  624. };
  625. typedef struct TQ3GeneralPolygonData    TQ3GeneralPolygonData;
  626. /******************************************************************************
  627.  **                                                                             **
  628.  **                            General polygon Routines                         **
  629.  **                                                                             **
  630.  *****************************************************************************/
  631. EXTERN_API_C( TQ3GeometryObject )
  632. Q3GeneralPolygon_New            (const TQ3GeneralPolygonData * generalPolygonData);
  633.  
  634. EXTERN_API_C( TQ3Status )
  635. Q3GeneralPolygon_Submit            (const TQ3GeneralPolygonData * generalPolygonData,
  636.                                  TQ3ViewObject             view);
  637.  
  638. EXTERN_API_C( TQ3Status )
  639. Q3GeneralPolygon_SetData        (TQ3GeometryObject         generalPolygon,
  640.                                  const TQ3GeneralPolygonData * generalPolygonData);
  641.  
  642. EXTERN_API_C( TQ3Status )
  643. Q3GeneralPolygon_GetData        (TQ3GeometryObject         polygon,
  644.                                  TQ3GeneralPolygonData * generalPolygonData);
  645.  
  646. EXTERN_API_C( TQ3Status )
  647. Q3GeneralPolygon_EmptyData        (TQ3GeneralPolygonData * generalPolygonData);
  648.  
  649. EXTERN_API_C( TQ3Status )
  650. Q3GeneralPolygon_GetVertexPosition (TQ3GeometryObject     generalPolygon,
  651.                                  unsigned long             contourIndex,
  652.                                  unsigned long             pointIndex,
  653.                                  TQ3Point3D *            position);
  654.  
  655. EXTERN_API_C( TQ3Status )
  656. Q3GeneralPolygon_SetVertexPosition (TQ3GeometryObject     generalPolygon,
  657.                                  unsigned long             contourIndex,
  658.                                  unsigned long             pointIndex,
  659.                                  const TQ3Point3D *        position);
  660.  
  661. EXTERN_API_C( TQ3Status )
  662. Q3GeneralPolygon_GetVertexAttributeSet (TQ3GeometryObject  generalPolygon,
  663.                                  unsigned long             contourIndex,
  664.                                  unsigned long             pointIndex,
  665.                                  TQ3AttributeSet *        attributeSet);
  666.  
  667. EXTERN_API_C( TQ3Status )
  668. Q3GeneralPolygon_SetVertexAttributeSet (TQ3GeometryObject  generalPolygon,
  669.                                  unsigned long             contourIndex,
  670.                                  unsigned long             pointIndex,
  671.                                  TQ3AttributeSet         attributeSet);
  672.  
  673. EXTERN_API_C( TQ3Status )
  674. Q3GeneralPolygon_SetShapeHint    (TQ3GeometryObject         generalPolygon,
  675.                                  TQ3GeneralPolygonShapeHint  shapeHint);
  676.  
  677. EXTERN_API_C( TQ3Status )
  678. Q3GeneralPolygon_GetShapeHint    (TQ3GeometryObject         generalPolygon,
  679.                                  TQ3GeneralPolygonShapeHint * shapeHint);
  680.  
  681.  
  682.  
  683.  
  684. /******************************************************************************
  685.  **                                                                             **
  686.  **                        Line Data Structure Definitions                         **
  687.  **                                                                             **
  688.  *****************************************************************************/
  689.  
  690. struct TQ3LineData {
  691.     TQ3Vertex3D                     vertices[2];
  692.     TQ3AttributeSet                 lineAttributeSet;
  693. };
  694. typedef struct TQ3LineData                TQ3LineData;
  695. /******************************************************************************
  696.  **                                                                             **
  697.  **                            Line Routines                                     **
  698.  **                                                                             **
  699.  *****************************************************************************/
  700. EXTERN_API_C( TQ3GeometryObject )
  701. Q3Line_New                        (const TQ3LineData *    lineData);
  702.  
  703. EXTERN_API_C( TQ3Status )
  704. Q3Line_Submit                    (const TQ3LineData *    lineData,
  705.                                  TQ3ViewObject             view);
  706.  
  707. EXTERN_API_C( TQ3Status )
  708. Q3Line_GetData                    (TQ3GeometryObject         line,
  709.                                  TQ3LineData *            lineData);
  710.  
  711. EXTERN_API_C( TQ3Status )
  712. Q3Line_SetData                    (TQ3GeometryObject         line,
  713.                                  const TQ3LineData *    lineData);
  714.  
  715. EXTERN_API_C( TQ3Status )
  716. Q3Line_GetVertexPosition        (TQ3GeometryObject         line,
  717.                                  unsigned long             index,
  718.                                  TQ3Point3D *            position);
  719.  
  720. EXTERN_API_C( TQ3Status )
  721. Q3Line_SetVertexPosition        (TQ3GeometryObject         line,
  722.                                  unsigned long             index,
  723.                                  const TQ3Point3D *        position);
  724.  
  725. EXTERN_API_C( TQ3Status )
  726. Q3Line_GetVertexAttributeSet    (TQ3GeometryObject         line,
  727.                                  unsigned long             index,
  728.                                  TQ3AttributeSet *        attributeSet);
  729.  
  730. EXTERN_API_C( TQ3Status )
  731. Q3Line_SetVertexAttributeSet    (TQ3GeometryObject         line,
  732.                                  unsigned long             index,
  733.                                  TQ3AttributeSet         attributeSet);
  734.  
  735. EXTERN_API_C( TQ3Status )
  736. Q3Line_EmptyData                (TQ3LineData *            lineData);
  737.  
  738.  
  739.  
  740.  
  741. /******************************************************************************
  742.  **                                                                             **
  743.  **                        Marker Data Structure Definitions                     **
  744.  **                                                                             **
  745.  *****************************************************************************/
  746.  
  747. struct TQ3MarkerData {
  748.     TQ3Point3D                         location;
  749.     long                             xOffset;
  750.     long                             yOffset;
  751.     TQ3Bitmap                         bitmap;
  752.     TQ3AttributeSet                 markerAttributeSet;
  753. };
  754. typedef struct TQ3MarkerData            TQ3MarkerData;
  755. /******************************************************************************
  756.  **                                                                             **
  757.  **                                Marker Routines                                 **
  758.  **                                                                             **
  759.  *****************************************************************************/
  760. EXTERN_API_C( TQ3GeometryObject )
  761. Q3Marker_New                    (const TQ3MarkerData *    markerData);
  762.  
  763. EXTERN_API_C( TQ3Status )
  764. Q3Marker_Submit                    (const TQ3MarkerData *    markerData,
  765.                                  TQ3ViewObject             view);
  766.  
  767. EXTERN_API_C( TQ3Status )
  768. Q3Marker_SetData                (TQ3GeometryObject         geometry,
  769.                                  const TQ3MarkerData *    markerData);
  770.  
  771. EXTERN_API_C( TQ3Status )
  772. Q3Marker_GetData                (TQ3GeometryObject         geometry,
  773.                                  TQ3MarkerData *        markerData);
  774.  
  775. EXTERN_API_C( TQ3Status )
  776. Q3Marker_EmptyData                (TQ3MarkerData *        markerData);
  777.  
  778. EXTERN_API_C( TQ3Status )
  779. Q3Marker_GetPosition            (TQ3GeometryObject         marker,
  780.                                  TQ3Point3D *            location);
  781.  
  782. EXTERN_API_C( TQ3Status )
  783. Q3Marker_SetPosition            (TQ3GeometryObject         marker,
  784.                                  const TQ3Point3D *        location);
  785.  
  786. EXTERN_API_C( TQ3Status )
  787. Q3Marker_GetXOffset                (TQ3GeometryObject         marker,
  788.                                  long *                    xOffset);
  789.  
  790. EXTERN_API_C( TQ3Status )
  791. Q3Marker_SetXOffset                (TQ3GeometryObject         marker,
  792.                                  long                     xOffset);
  793.  
  794. EXTERN_API_C( TQ3Status )
  795. Q3Marker_GetYOffset                (TQ3GeometryObject         marker,
  796.                                  long *                    yOffset);
  797.  
  798. EXTERN_API_C( TQ3Status )
  799. Q3Marker_SetYOffset                (TQ3GeometryObject         marker,
  800.                                  long                     yOffset);
  801.  
  802. EXTERN_API_C( TQ3Status )
  803. Q3Marker_GetBitmap                (TQ3GeometryObject         marker,
  804.                                  TQ3Bitmap *            bitmap);
  805.  
  806. EXTERN_API_C( TQ3Status )
  807. Q3Marker_SetBitmap                (TQ3GeometryObject         marker,
  808.                                  const TQ3Bitmap *        bitmap);
  809.  
  810.  
  811.  
  812.  
  813. /******************************************************************************
  814.  **                                                                             **
  815.  **                        Mesh Data Structure Definitions                         **
  816.  **                                                                             **
  817.  *****************************************************************************/
  818. typedef struct OpaqueTQ3MeshComponent*     TQ3MeshComponent;
  819. typedef struct OpaqueTQ3MeshVertex*     TQ3MeshVertex;
  820. typedef struct OpaqueTQ3MeshFace*         TQ3MeshFace;
  821. typedef struct OpaqueTQ3MeshEdge*         TQ3MeshEdge;
  822. typedef struct OpaqueTQ3MeshContour*     TQ3MeshContour;
  823. /******************************************************************************
  824.  **                                                                             **
  825.  **                            Mesh Routines                                      **
  826.  **                                                                             **
  827.  *****************************************************************************/
  828. /*
  829.  *  Constructors
  830.  */
  831. EXTERN_API_C( TQ3GeometryObject )
  832. Q3Mesh_New                        (void);
  833.  
  834. EXTERN_API_C( TQ3MeshVertex )
  835. Q3Mesh_VertexNew                (TQ3GeometryObject         mesh,
  836.                                  const TQ3Vertex3D *    vertex);
  837.  
  838. EXTERN_API_C( TQ3MeshFace )
  839. Q3Mesh_FaceNew                    (TQ3GeometryObject         mesh,
  840.                                  unsigned long             numVertices,
  841.                                  const TQ3MeshVertex *    vertices,
  842.                                  TQ3AttributeSet         attributeSet);
  843.  
  844. /*
  845.  *  Destructors
  846.  */
  847. EXTERN_API_C( TQ3Status )
  848. Q3Mesh_VertexDelete                (TQ3GeometryObject         mesh,
  849.                                  TQ3MeshVertex             vertex);
  850.  
  851. EXTERN_API_C( TQ3Status )
  852. Q3Mesh_FaceDelete                (TQ3GeometryObject         mesh,
  853.                                  TQ3MeshFace             face);
  854.  
  855. /*
  856.  * Methods
  857.  */
  858. EXTERN_API_C( TQ3Status )
  859. Q3Mesh_DelayUpdates                (TQ3GeometryObject         mesh);
  860.  
  861. EXTERN_API_C( TQ3Status )
  862. Q3Mesh_ResumeUpdates            (TQ3GeometryObject         mesh);
  863.  
  864. EXTERN_API_C( TQ3MeshContour )
  865. Q3Mesh_FaceToContour            (TQ3GeometryObject         mesh,
  866.                                  TQ3MeshFace             containerFace,
  867.                                  TQ3MeshFace             face);
  868.  
  869. EXTERN_API_C( TQ3MeshFace )
  870. Q3Mesh_ContourToFace            (TQ3GeometryObject         mesh,
  871.                                  TQ3MeshContour         contour);
  872.  
  873. /*
  874.  * Mesh
  875.  */
  876. EXTERN_API_C( TQ3Status )
  877. Q3Mesh_GetNumComponents            (TQ3GeometryObject         mesh,
  878.                                  unsigned long *        numComponents);
  879.  
  880. EXTERN_API_C( TQ3Status )
  881. Q3Mesh_GetNumEdges                (TQ3GeometryObject         mesh,
  882.                                  unsigned long *        numEdges);
  883.  
  884. EXTERN_API_C( TQ3Status )
  885. Q3Mesh_GetNumVertices            (TQ3GeometryObject         mesh,
  886.                                  unsigned long *        numVertices);
  887.  
  888. EXTERN_API_C( TQ3Status )
  889. Q3Mesh_GetNumFaces                (TQ3GeometryObject         mesh,
  890.                                  unsigned long *        numFaces);
  891.  
  892. EXTERN_API_C( TQ3Status )
  893. Q3Mesh_GetNumCorners            (TQ3GeometryObject         mesh,
  894.                                  unsigned long *        numCorners);
  895.  
  896. EXTERN_API_C( TQ3Status )
  897. Q3Mesh_GetOrientable            (TQ3GeometryObject         mesh,
  898.                                  TQ3Boolean *            orientable);
  899.  
  900. /*
  901.  * Component
  902.  */
  903. EXTERN_API_C( TQ3Status )
  904. Q3Mesh_GetComponentNumVertices    (TQ3GeometryObject         mesh,
  905.                                  TQ3MeshComponent         component,
  906.                                  unsigned long *        numVertices);
  907.  
  908. EXTERN_API_C( TQ3Status )
  909. Q3Mesh_GetComponentNumEdges        (TQ3GeometryObject         mesh,
  910.                                  TQ3MeshComponent         component,
  911.                                  unsigned long *        numEdges);
  912.  
  913. EXTERN_API_C( TQ3Status )
  914. Q3Mesh_GetComponentBoundingBox    (TQ3GeometryObject         mesh,
  915.                                  TQ3MeshComponent         component,
  916.                                  TQ3BoundingBox *        boundingBox);
  917.  
  918. EXTERN_API_C( TQ3Status )
  919. Q3Mesh_GetComponentOrientable    (TQ3GeometryObject         mesh,
  920.                                  TQ3MeshComponent         component,
  921.                                  TQ3Boolean *            orientable);
  922.  
  923. /*
  924.  * Vertex
  925.  */
  926. EXTERN_API_C( TQ3Status )
  927. Q3Mesh_GetVertexCoordinates        (TQ3GeometryObject         mesh,
  928.                                  TQ3MeshVertex             vertex,
  929.                                  TQ3Point3D *            coordinates);
  930.  
  931. EXTERN_API_C( TQ3Status )
  932. Q3Mesh_GetVertexIndex            (TQ3GeometryObject         mesh,
  933.                                  TQ3MeshVertex             vertex,
  934.                                  unsigned long *        index);
  935.  
  936. EXTERN_API_C( TQ3Status )
  937. Q3Mesh_GetVertexOnBoundary        (TQ3GeometryObject         mesh,
  938.                                  TQ3MeshVertex             vertex,
  939.                                  TQ3Boolean *            onBoundary);
  940.  
  941. EXTERN_API_C( TQ3Status )
  942. Q3Mesh_GetVertexComponent        (TQ3GeometryObject         mesh,
  943.                                  TQ3MeshVertex             vertex,
  944.                                  TQ3MeshComponent *        component);
  945.  
  946. EXTERN_API_C( TQ3Status )
  947. Q3Mesh_GetVertexAttributeSet    (TQ3GeometryObject         mesh,
  948.                                  TQ3MeshVertex             vertex,
  949.                                  TQ3AttributeSet *        attributeSet);
  950.  
  951.  
  952. EXTERN_API_C( TQ3Status )
  953. Q3Mesh_SetVertexCoordinates        (TQ3GeometryObject         mesh,
  954.                                  TQ3MeshVertex             vertex,
  955.                                  const TQ3Point3D *        coordinates);
  956.  
  957. EXTERN_API_C( TQ3Status )
  958. Q3Mesh_SetVertexAttributeSet    (TQ3GeometryObject         mesh,
  959.                                  TQ3MeshVertex             vertex,
  960.                                  TQ3AttributeSet         attributeSet);
  961.  
  962.  
  963. /*
  964.  * Face
  965.  */
  966. EXTERN_API_C( TQ3Status )
  967. Q3Mesh_GetFaceNumVertices        (TQ3GeometryObject         mesh,
  968.                                  TQ3MeshFace             face,
  969.                                  unsigned long *        numVertices);
  970.  
  971. EXTERN_API_C( TQ3Status )
  972. Q3Mesh_GetFacePlaneEquation        (TQ3GeometryObject         mesh,
  973.                                  TQ3MeshFace             face,
  974.                                  TQ3PlaneEquation *        planeEquation);
  975.  
  976. EXTERN_API_C( TQ3Status )
  977. Q3Mesh_GetFaceNumContours        (TQ3GeometryObject         mesh,
  978.                                  TQ3MeshFace             face,
  979.                                  unsigned long *        numContours);
  980.  
  981. EXTERN_API_C( TQ3Status )
  982. Q3Mesh_GetFaceIndex                (TQ3GeometryObject         mesh,
  983.                                  TQ3MeshFace             face,
  984.                                  unsigned long *        index);
  985.  
  986. EXTERN_API_C( TQ3Status )
  987. Q3Mesh_GetFaceComponent            (TQ3GeometryObject         mesh,
  988.                                  TQ3MeshFace             face,
  989.                                  TQ3MeshComponent *        component);
  990.  
  991. EXTERN_API_C( TQ3Status )
  992. Q3Mesh_GetFaceAttributeSet        (TQ3GeometryObject         mesh,
  993.                                  TQ3MeshFace             face,
  994.                                  TQ3AttributeSet *        attributeSet);
  995.  
  996.  
  997. EXTERN_API_C( TQ3Status )
  998. Q3Mesh_SetFaceAttributeSet        (TQ3GeometryObject         mesh,
  999.                                  TQ3MeshFace             face,
  1000.                                  TQ3AttributeSet         attributeSet);
  1001.  
  1002. /*
  1003.  * Edge
  1004.  */
  1005. EXTERN_API_C( TQ3Status )
  1006. Q3Mesh_GetEdgeVertices            (TQ3GeometryObject         mesh,
  1007.                                  TQ3MeshEdge             edge,
  1008.                                  TQ3MeshVertex *        vertex1,
  1009.                                  TQ3MeshVertex *        vertex2);
  1010.  
  1011. EXTERN_API_C( TQ3Status )
  1012. Q3Mesh_GetEdgeFaces                (TQ3GeometryObject         mesh,
  1013.                                  TQ3MeshEdge             edge,
  1014.                                  TQ3MeshFace *            face1,
  1015.                                  TQ3MeshFace *            face2);
  1016.  
  1017. EXTERN_API_C( TQ3Status )
  1018. Q3Mesh_GetEdgeOnBoundary        (TQ3GeometryObject         mesh,
  1019.                                  TQ3MeshEdge             edge,
  1020.                                  TQ3Boolean *            onBoundary);
  1021.  
  1022. EXTERN_API_C( TQ3Status )
  1023. Q3Mesh_GetEdgeComponent            (TQ3GeometryObject         mesh,
  1024.                                  TQ3MeshEdge             edge,
  1025.                                  TQ3MeshComponent *        component);
  1026.  
  1027. EXTERN_API_C( TQ3Status )
  1028. Q3Mesh_GetEdgeAttributeSet        (TQ3GeometryObject         mesh,
  1029.                                  TQ3MeshEdge             edge,
  1030.                                  TQ3AttributeSet *        attributeSet);
  1031.  
  1032.  
  1033. EXTERN_API_C( TQ3Status )
  1034. Q3Mesh_SetEdgeAttributeSet        (TQ3GeometryObject         mesh,
  1035.                                  TQ3MeshEdge             edge,
  1036.                                  TQ3AttributeSet         attributeSet);
  1037.  
  1038. /*
  1039.  * Contour
  1040.  */
  1041. EXTERN_API_C( TQ3Status )
  1042. Q3Mesh_GetContourFace            (TQ3GeometryObject         mesh,
  1043.                                  TQ3MeshContour         contour,
  1044.                                  TQ3MeshFace *            face);
  1045.  
  1046. EXTERN_API_C( TQ3Status )
  1047. Q3Mesh_GetContourNumVertices    (TQ3GeometryObject         mesh,
  1048.                                  TQ3MeshContour         contour,
  1049.                                  unsigned long *        numVertices);
  1050.  
  1051. /*
  1052.  * Corner
  1053.  */
  1054. EXTERN_API_C( TQ3Status )
  1055. Q3Mesh_GetCornerAttributeSet    (TQ3GeometryObject         mesh,
  1056.                                  TQ3MeshVertex             vertex,
  1057.                                  TQ3MeshFace             face,
  1058.                                  TQ3AttributeSet *        attributeSet);
  1059.  
  1060. EXTERN_API_C( TQ3Status )
  1061. Q3Mesh_SetCornerAttributeSet    (TQ3GeometryObject         mesh,
  1062.                                  TQ3MeshVertex             vertex,
  1063.                                  TQ3MeshFace             face,
  1064.                                  TQ3AttributeSet         attributeSet);
  1065.  
  1066.  
  1067. /*
  1068.  * Public Mesh Iterators
  1069.  */
  1070.  
  1071. struct TQ3MeshIterator {
  1072.     void *                            var1;
  1073.     void *                            var2;
  1074.     void *                            var3;
  1075.     struct {
  1076.         void *                            field1;
  1077.         char                             field2[4];
  1078.     }                                 var4;
  1079. };
  1080. typedef struct TQ3MeshIterator            TQ3MeshIterator;
  1081. EXTERN_API_C( TQ3MeshComponent )
  1082. Q3Mesh_FirstMeshComponent        (TQ3GeometryObject         mesh,
  1083.                                  TQ3MeshIterator *        iterator);
  1084.  
  1085. EXTERN_API_C( TQ3MeshComponent )
  1086. Q3Mesh_NextMeshComponent        (TQ3MeshIterator *        iterator);
  1087.  
  1088. EXTERN_API_C( TQ3MeshVertex )
  1089. Q3Mesh_FirstComponentVertex        (TQ3MeshComponent         component,
  1090.                                  TQ3MeshIterator *        iterator);
  1091.  
  1092. EXTERN_API_C( TQ3MeshVertex )
  1093. Q3Mesh_NextComponentVertex        (TQ3MeshIterator *        iterator);
  1094.  
  1095. EXTERN_API_C( TQ3MeshEdge )
  1096. Q3Mesh_FirstComponentEdge        (TQ3MeshComponent         component,
  1097.                                  TQ3MeshIterator *        iterator);
  1098.  
  1099. EXTERN_API_C( TQ3MeshEdge )
  1100. Q3Mesh_NextComponentEdge        (TQ3MeshIterator *        iterator);
  1101.  
  1102. EXTERN_API_C( TQ3MeshVertex )
  1103. Q3Mesh_FirstMeshVertex            (TQ3GeometryObject         mesh,
  1104.                                  TQ3MeshIterator *        iterator);
  1105.  
  1106. EXTERN_API_C( TQ3MeshVertex )
  1107. Q3Mesh_NextMeshVertex            (TQ3MeshIterator *        iterator);
  1108.  
  1109. EXTERN_API_C( TQ3MeshFace )
  1110. Q3Mesh_FirstMeshFace            (TQ3GeometryObject         mesh,
  1111.                                  TQ3MeshIterator *        iterator);
  1112.  
  1113. EXTERN_API_C( TQ3MeshFace )
  1114. Q3Mesh_NextMeshFace                (TQ3MeshIterator *        iterator);
  1115.  
  1116. EXTERN_API_C( TQ3MeshEdge )
  1117. Q3Mesh_FirstMeshEdge            (TQ3GeometryObject         mesh,
  1118.                                  TQ3MeshIterator *        iterator);
  1119.  
  1120. EXTERN_API_C( TQ3MeshEdge )
  1121. Q3Mesh_NextMeshEdge                (TQ3MeshIterator *        iterator);
  1122.  
  1123. EXTERN_API_C( TQ3MeshEdge )
  1124. Q3Mesh_FirstVertexEdge            (TQ3MeshVertex             vertex,
  1125.                                  TQ3MeshIterator *        iterator);
  1126.  
  1127. EXTERN_API_C( TQ3MeshEdge )
  1128. Q3Mesh_NextVertexEdge            (TQ3MeshIterator *        iterator);
  1129.  
  1130. EXTERN_API_C( TQ3MeshVertex )
  1131. Q3Mesh_FirstVertexVertex        (TQ3MeshVertex             vertex,
  1132.                                  TQ3MeshIterator *        iterator);
  1133.  
  1134. EXTERN_API_C( TQ3MeshVertex )
  1135. Q3Mesh_NextVertexVertex            (TQ3MeshIterator *        iterator);
  1136.  
  1137. EXTERN_API_C( TQ3MeshFace )
  1138. Q3Mesh_FirstVertexFace            (TQ3MeshVertex             vertex,
  1139.                                  TQ3MeshIterator *        iterator);
  1140.  
  1141. EXTERN_API_C( TQ3MeshFace )
  1142. Q3Mesh_NextVertexFace            (TQ3MeshIterator *        iterator);
  1143.  
  1144. EXTERN_API_C( TQ3MeshEdge )
  1145. Q3Mesh_FirstFaceEdge            (TQ3MeshFace             face,
  1146.                                  TQ3MeshIterator *        iterator);
  1147.  
  1148. EXTERN_API_C( TQ3MeshEdge )
  1149. Q3Mesh_NextFaceEdge                (TQ3MeshIterator *        iterator);
  1150.  
  1151. EXTERN_API_C( TQ3MeshVertex )
  1152. Q3Mesh_FirstFaceVertex            (TQ3MeshFace             face,
  1153.                                  TQ3MeshIterator *        iterator);
  1154.  
  1155. EXTERN_API_C( TQ3MeshVertex )
  1156. Q3Mesh_NextFaceVertex            (TQ3MeshIterator *        iterator);
  1157.  
  1158. EXTERN_API_C( TQ3MeshFace )
  1159. Q3Mesh_FirstFaceFace            (TQ3MeshFace             face,
  1160.                                  TQ3MeshIterator *        iterator);
  1161.  
  1162. EXTERN_API_C( TQ3MeshFace )
  1163. Q3Mesh_NextFaceFace                (TQ3MeshIterator *        iterator);
  1164.  
  1165. EXTERN_API_C( TQ3MeshContour )
  1166. Q3Mesh_FirstFaceContour            (TQ3MeshFace             face,
  1167.                                  TQ3MeshIterator *        iterator);
  1168.  
  1169. EXTERN_API_C( TQ3MeshContour )
  1170. Q3Mesh_NextFaceContour            (TQ3MeshIterator *        iterator);
  1171.  
  1172. EXTERN_API_C( TQ3MeshEdge )
  1173. Q3Mesh_FirstContourEdge            (TQ3MeshContour         contour,
  1174.                                  TQ3MeshIterator *        iterator);
  1175.  
  1176. EXTERN_API_C( TQ3MeshEdge )
  1177. Q3Mesh_NextContourEdge            (TQ3MeshIterator *        iterator);
  1178.  
  1179. EXTERN_API_C( TQ3MeshVertex )
  1180. Q3Mesh_FirstContourVertex        (TQ3MeshContour         contour,
  1181.                                  TQ3MeshIterator *        iterator);
  1182.  
  1183. EXTERN_API_C( TQ3MeshVertex )
  1184. Q3Mesh_NextContourVertex        (TQ3MeshIterator *        iterator);
  1185.  
  1186. EXTERN_API_C( TQ3MeshFace )
  1187. Q3Mesh_FirstContourFace            (TQ3MeshContour         contour,
  1188.                                  TQ3MeshIterator *        iterator);
  1189.  
  1190. EXTERN_API_C( TQ3MeshFace )
  1191. Q3Mesh_NextContourFace            (TQ3MeshIterator *        iterator);
  1192.  
  1193.  
  1194. #define    Q3ForEachMeshComponent(m,c,i)                                        \
  1195.     for ( (c) = Q3Mesh_FirstMeshComponent((m),(i));                            \
  1196.           (c);                                                                \
  1197.           (c) = Q3Mesh_NextMeshComponent((i)) )
  1198.  
  1199. #define Q3ForEachComponentVertex(c,v,i)                                        \
  1200.     for ( (v) = Q3Mesh_FirstComponentVertex((c),(i));                        \
  1201.           (v);                                                                \
  1202.           (v) = Q3Mesh_NextComponentVertex((i)) )
  1203.           
  1204. #define Q3ForEachComponentEdge(c,e,i)                                        \
  1205.     for ( (e) = Q3Mesh_FirstComponentEdge((c),(i));                            \
  1206.           (e);                                                                \
  1207.           (e) = Q3Mesh_NextComponentEdge((i)) )
  1208.  
  1209. #define Q3ForEachMeshVertex(m,v,i)                                            \
  1210.     for ( (v) = Q3Mesh_FirstMeshVertex((m),(i));                            \
  1211.           (v);                                                                \
  1212.           (v) = Q3Mesh_NextMeshVertex((i)) )
  1213.  
  1214. #define Q3ForEachMeshFace(m,f,i)                                            \
  1215.     for ( (f) = Q3Mesh_FirstMeshFace((m),(i));                                \
  1216.           (f);                                                                \
  1217.           (f) = Q3Mesh_NextMeshFace((i)) )
  1218.  
  1219. #define Q3ForEachMeshEdge(m,e,i)                                            \
  1220.     for ( (e) = Q3Mesh_FirstMeshEdge((m),(i));                                \
  1221.           (e);                                                                \
  1222.           (e) = Q3Mesh_NextMeshEdge((i)) )
  1223.  
  1224. #define Q3ForEachVertexEdge(v,e,i)                                            \
  1225.     for ( (e) = Q3Mesh_FirstVertexEdge((v),(i));                            \
  1226.           (e);                                                                \
  1227.           (e) = Q3Mesh_NextVertexEdge((i)) )
  1228.  
  1229.  
  1230. #define Q3ForEachVertexVertex(v,n,i)                                        \
  1231.     for ( (n) = Q3Mesh_FirstVertexVertex((v),(i));                            \
  1232.           (n);                                                                \
  1233.           (n) = Q3Mesh_NextVertexVertex((i)) )
  1234.  
  1235. #define Q3ForEachVertexFace(v,f,i)                                            \
  1236.     for ( (f) = Q3Mesh_FirstVertexFace((v),(i));                            \
  1237.           (f);                                                                \
  1238.           (f) = Q3Mesh_NextVertexFace((i)) )
  1239.  
  1240. #define Q3ForEachFaceEdge(f,e,i)                                            \
  1241.     for ( (e) = Q3Mesh_FirstFaceEdge((f),(i));                                \
  1242.           (e);                                                                \
  1243.           (e) = Q3Mesh_NextFaceEdge((i)) )
  1244.  
  1245. #define Q3ForEachFaceVertex(f,v,i)                                            \
  1246.     for ( (v) = Q3Mesh_FirstFaceVertex((f),(i));                            \
  1247.           (v);                                                                \
  1248.           (v) = Q3Mesh_NextFaceVertex((i)) )
  1249.     
  1250. #define Q3ForEachFaceFace(f,n,i)                                            \
  1251.     for ( (n) = Q3Mesh_FirstFaceFace((f),(i));                              \
  1252.           (n);                                                                \
  1253.           (n) = Q3Mesh_NextFaceFace((i)) )
  1254.           
  1255. #define Q3ForEachFaceContour(f,h,i)                                            \
  1256.     for ( (h) = Q3Mesh_FirstFaceContour((f),(i));                            \
  1257.           (h);                                                                \
  1258.           (h) = Q3Mesh_NextFaceContour((i)) )
  1259.  
  1260. #define Q3ForEachContourEdge(h,e,i)                                            \
  1261.     for ( (e) = Q3Mesh_FirstContourEdge((h),(i));                            \
  1262.           (e);                                                                \
  1263.           (e) = Q3Mesh_NextContourEdge((i)) )
  1264.  
  1265. #define Q3ForEachContourVertex(h,v,i)                                        \
  1266.     for ( (v) = Q3Mesh_FirstContourVertex((h),(i));                            \
  1267.           (v);                                                                \
  1268.           (v) = Q3Mesh_NextContourVertex((i)) )
  1269.  
  1270. #define Q3ForEachContourFace(h,f,i)                                            \
  1271.     for ( (f) = Q3Mesh_FirstContourFace((h),(i));                            \
  1272.           (f);                                                                \
  1273.           (f) = Q3Mesh_NextContourFace((i)) )
  1274.  
  1275.  
  1276.  
  1277. /******************************************************************************
  1278.  **                                                                             **
  1279.  **                            Maximum order for NURB Curves                     **
  1280.  **                                                                             **
  1281.  *****************************************************************************/
  1282. #define kQ3NURBCurveMaxOrder    16
  1283.  
  1284. /******************************************************************************
  1285.  **                                                                             **
  1286.  **                        NURB Data Structure Definitions                         **
  1287.  **                                                                             **
  1288.  *****************************************************************************/
  1289.  
  1290. struct TQ3NURBCurveData {
  1291.     unsigned long                     order;
  1292.     unsigned long                     numPoints;
  1293.     TQ3RationalPoint4D *            controlPoints;
  1294.     float *                            knots;
  1295.     TQ3AttributeSet                 curveAttributeSet;
  1296. };
  1297. typedef struct TQ3NURBCurveData            TQ3NURBCurveData;
  1298. /******************************************************************************
  1299.  **                                                                             **
  1300.  **                                NURB Curve Routines                             **
  1301.  **                                                                             **
  1302.  *****************************************************************************/
  1303. EXTERN_API_C( TQ3GeometryObject )
  1304. Q3NURBCurve_New                    (const TQ3NURBCurveData * curveData);
  1305.  
  1306. EXTERN_API_C( TQ3Status )
  1307. Q3NURBCurve_Submit                (const TQ3NURBCurveData * curveData,
  1308.                                  TQ3ViewObject             view);
  1309.  
  1310. EXTERN_API_C( TQ3Status )
  1311. Q3NURBCurve_SetData                (TQ3GeometryObject         curve,
  1312.                                  const TQ3NURBCurveData * nurbCurveData);
  1313.  
  1314. EXTERN_API_C( TQ3Status )
  1315. Q3NURBCurve_GetData                (TQ3GeometryObject         curve,
  1316.                                  TQ3NURBCurveData *        nurbCurveData);
  1317.  
  1318. EXTERN_API_C( TQ3Status )
  1319. Q3NURBCurve_EmptyData            (TQ3NURBCurveData *        nurbCurveData);
  1320.  
  1321. EXTERN_API_C( TQ3Status )
  1322. Q3NURBCurve_SetControlPoint        (TQ3GeometryObject         curve,
  1323.                                  unsigned long             pointIndex,
  1324.                                  const TQ3RationalPoint4D * point4D);
  1325.  
  1326. EXTERN_API_C( TQ3Status )
  1327. Q3NURBCurve_GetControlPoint        (TQ3GeometryObject         curve,
  1328.                                  unsigned long             pointIndex,
  1329.                                  TQ3RationalPoint4D *    point4D);
  1330.  
  1331. EXTERN_API_C( TQ3Status )
  1332. Q3NURBCurve_SetKnot                (TQ3GeometryObject         curve,
  1333.                                  unsigned long             knotIndex,
  1334.                                  float                     knotValue);
  1335.  
  1336. EXTERN_API_C( TQ3Status )
  1337. Q3NURBCurve_GetKnot                (TQ3GeometryObject         curve,
  1338.                                  unsigned long             knotIndex,
  1339.                                  float *                knotValue);
  1340.  
  1341.  
  1342. /******************************************************************************
  1343.  **                                                                             **
  1344.  **                            Maximum NURB Patch Order                         **
  1345.  **                                                                             **
  1346.  *****************************************************************************/
  1347. #define kQ3NURBPatchMaxOrder    11
  1348. /******************************************************************************
  1349.  **                                                                             **
  1350.  **                        NURB Patch Data Structure Definitions                 **
  1351.  **                                                                             **
  1352.  *****************************************************************************/
  1353.  
  1354. struct TQ3NURBPatchTrimCurveData {
  1355.     unsigned long                     order;
  1356.     unsigned long                     numPoints;
  1357.     TQ3RationalPoint3D *            controlPoints;
  1358.     float *                            knots;
  1359. };
  1360. typedef struct TQ3NURBPatchTrimCurveData TQ3NURBPatchTrimCurveData;
  1361.  
  1362. struct TQ3NURBPatchTrimLoopData {
  1363.     unsigned long                     numTrimCurves;
  1364.     TQ3NURBPatchTrimCurveData *        trimCurves;
  1365. };
  1366. typedef struct TQ3NURBPatchTrimLoopData    TQ3NURBPatchTrimLoopData;
  1367.  
  1368. struct TQ3NURBPatchData {
  1369.     unsigned long                     uOrder;
  1370.     unsigned long                     vOrder;
  1371.     unsigned long                     numRows;
  1372.     unsigned long                     numColumns;
  1373.     TQ3RationalPoint4D *            controlPoints;
  1374.     float *                            uKnots;
  1375.     float *                            vKnots;
  1376.     unsigned long                     numTrimLoops;
  1377.     TQ3NURBPatchTrimLoopData *        trimLoops;
  1378.     TQ3AttributeSet                 patchAttributeSet;
  1379. };
  1380. typedef struct TQ3NURBPatchData            TQ3NURBPatchData;
  1381. /******************************************************************************
  1382.  **                                                                             **
  1383.  **                                NURB Patch Routines                             **
  1384.  **                                                                             **
  1385.  *****************************************************************************/
  1386. EXTERN_API_C( TQ3GeometryObject )
  1387. Q3NURBPatch_New                    (const TQ3NURBPatchData * nurbPatchData);
  1388.  
  1389. EXTERN_API_C( TQ3Status )
  1390. Q3NURBPatch_Submit                (const TQ3NURBPatchData * nurbPatchData,
  1391.                                  TQ3ViewObject             view);
  1392.  
  1393. EXTERN_API_C( TQ3Status )
  1394. Q3NURBPatch_SetData                (TQ3GeometryObject         nurbPatch,
  1395.                                  const TQ3NURBPatchData * nurbPatchData);
  1396.  
  1397. EXTERN_API_C( TQ3Status )
  1398. Q3NURBPatch_GetData                (TQ3GeometryObject         nurbPatch,
  1399.                                  TQ3NURBPatchData *        nurbPatchData);
  1400.  
  1401. EXTERN_API_C( TQ3Status )
  1402. Q3NURBPatch_SetControlPoint        (TQ3GeometryObject         nurbPatch,
  1403.                                  unsigned long             rowIndex,
  1404.                                  unsigned long             columnIndex,
  1405.                                  const TQ3RationalPoint4D * point4D);
  1406.  
  1407. EXTERN_API_C( TQ3Status )
  1408. Q3NURBPatch_GetControlPoint        (TQ3GeometryObject         nurbPatch,
  1409.                                  unsigned long             rowIndex,
  1410.                                  unsigned long             columnIndex,
  1411.                                  TQ3RationalPoint4D *    point4D);
  1412.  
  1413. EXTERN_API_C( TQ3Status )
  1414. Q3NURBPatch_SetUKnot            (TQ3GeometryObject         nurbPatch,
  1415.                                  unsigned long             knotIndex,
  1416.                                  float                     knotValue);
  1417.  
  1418. EXTERN_API_C( TQ3Status )
  1419. Q3NURBPatch_SetVKnot            (TQ3GeometryObject         nurbPatch,
  1420.                                  unsigned long             knotIndex,
  1421.                                  float                     knotValue);
  1422.  
  1423. EXTERN_API_C( TQ3Status )
  1424. Q3NURBPatch_GetUKnot            (TQ3GeometryObject         nurbPatch,
  1425.                                  unsigned long             knotIndex,
  1426.                                  float *                knotValue);
  1427.  
  1428. EXTERN_API_C( TQ3Status )
  1429. Q3NURBPatch_GetVKnot            (TQ3GeometryObject         nurbPatch,
  1430.                                  unsigned long             knotIndex,
  1431.                                  float *                knotValue);
  1432.  
  1433. EXTERN_API_C( TQ3Status )
  1434. Q3NURBPatch_EmptyData            (TQ3NURBPatchData *        nurbPatchData);
  1435.  
  1436.  
  1437.  
  1438.  
  1439. /******************************************************************************
  1440.  **                                                                             **
  1441.  **                        Pixmap Marker Data Structure Definitions             **
  1442.  **                                                                             **
  1443.  *****************************************************************************/
  1444.  
  1445. struct TQ3PixmapMarkerData {
  1446.     TQ3Point3D                         position;
  1447.     long                             xOffset;
  1448.     long                             yOffset;
  1449.     TQ3StoragePixmap                 pixmap;
  1450.     TQ3AttributeSet                 pixmapMarkerAttributeSet;
  1451. };
  1452. typedef struct TQ3PixmapMarkerData        TQ3PixmapMarkerData;
  1453. /******************************************************************************
  1454.  **                                                                             **
  1455.  **                                Pixmap Marker Routines                         **
  1456.  **                                                                             **
  1457.  *****************************************************************************/
  1458. EXTERN_API_C( TQ3GeometryObject )
  1459. Q3PixmapMarker_New                (const TQ3PixmapMarkerData * pixmapMarkerData);
  1460.  
  1461. EXTERN_API_C( TQ3Status )
  1462. Q3PixmapMarker_Submit            (const TQ3PixmapMarkerData * pixmapMarkerData,
  1463.                                  TQ3ViewObject             view);
  1464.  
  1465. EXTERN_API_C( TQ3Status )
  1466. Q3PixmapMarker_SetData            (TQ3GeometryObject         geometry,
  1467.                                  const TQ3PixmapMarkerData * pixmapMarkerData);
  1468.  
  1469. EXTERN_API_C( TQ3Status )
  1470. Q3PixmapMarker_GetData            (TQ3GeometryObject         geometry,
  1471.                                  TQ3PixmapMarkerData *    pixmapMarkerData);
  1472.  
  1473. EXTERN_API_C( TQ3Status )
  1474. Q3PixmapMarker_EmptyData        (TQ3PixmapMarkerData *    pixmapMarkerData);
  1475.  
  1476. EXTERN_API_C( TQ3Status )
  1477. Q3PixmapMarker_GetPosition        (TQ3GeometryObject         pixmapMarker,
  1478.                                  TQ3Point3D *            position);
  1479.  
  1480. EXTERN_API_C( TQ3Status )
  1481. Q3PixmapMarker_SetPosition        (TQ3GeometryObject         pixmapMarker,
  1482.                                  const TQ3Point3D *        position);
  1483.  
  1484. EXTERN_API_C( TQ3Status )
  1485. Q3PixmapMarker_GetXOffset        (TQ3GeometryObject         pixmapMarker,
  1486.                                  long *                    xOffset);
  1487.  
  1488. EXTERN_API_C( TQ3Status )
  1489. Q3PixmapMarker_SetXOffset        (TQ3GeometryObject         pixmapMarker,
  1490.                                  long                     xOffset);
  1491.  
  1492. EXTERN_API_C( TQ3Status )
  1493. Q3PixmapMarker_GetYOffset        (TQ3GeometryObject         pixmapMarker,
  1494.                                  long *                    yOffset);
  1495.  
  1496. EXTERN_API_C( TQ3Status )
  1497. Q3PixmapMarker_SetYOffset        (TQ3GeometryObject         pixmapMarker,
  1498.                                  long                     yOffset);
  1499.  
  1500. EXTERN_API_C( TQ3Status )
  1501. Q3PixmapMarker_GetPixmap        (TQ3GeometryObject         pixmapMarker,
  1502.                                  TQ3StoragePixmap *        pixmap);
  1503.  
  1504. EXTERN_API_C( TQ3Status )
  1505. Q3PixmapMarker_SetPixmap        (TQ3GeometryObject         pixmapMarker,
  1506.                                  const TQ3StoragePixmap * pixmap);
  1507.  
  1508.  
  1509.  
  1510.  
  1511. /******************************************************************************
  1512.  **                                                                             **
  1513.  **                        Point Data Structure Definitions                     **
  1514.  **                                                                             **
  1515.  *****************************************************************************/
  1516.  
  1517. struct TQ3PointData {
  1518.     TQ3Point3D                         point;
  1519.     TQ3AttributeSet                 pointAttributeSet;
  1520. };
  1521. typedef struct TQ3PointData                TQ3PointData;
  1522. /******************************************************************************
  1523.  **                                                                             **
  1524.  **                                Point Routines                                 **
  1525.  **                                                                             **
  1526.  *****************************************************************************/
  1527. EXTERN_API_C( TQ3GeometryObject )
  1528. Q3Point_New                        (const TQ3PointData *    pointData);
  1529.  
  1530. EXTERN_API_C( TQ3Status )
  1531. Q3Point_Submit                    (const TQ3PointData *    pointData,
  1532.                                  TQ3ViewObject             view);
  1533.  
  1534. EXTERN_API_C( TQ3Status )
  1535. Q3Point_GetData                    (TQ3GeometryObject         point,
  1536.                                  TQ3PointData *            pointData);
  1537.  
  1538. EXTERN_API_C( TQ3Status )
  1539. Q3Point_SetData                    (TQ3GeometryObject         point,
  1540.                                  const TQ3PointData *    pointData);
  1541.  
  1542. EXTERN_API_C( TQ3Status )
  1543. Q3Point_EmptyData                (TQ3PointData *            pointData);
  1544.  
  1545. EXTERN_API_C( TQ3Status )
  1546. Q3Point_SetPosition                (TQ3GeometryObject         point,
  1547.                                  const TQ3Point3D *        position);
  1548.  
  1549. EXTERN_API_C( TQ3Status )
  1550. Q3Point_GetPosition                (TQ3GeometryObject         point,
  1551.                                  TQ3Point3D *            position);
  1552.  
  1553.  
  1554.  
  1555.  
  1556. /******************************************************************************
  1557.  **                                                                             **
  1558.  **                        Polygon Data Structure Definitions                     **
  1559.  **                                                                             **
  1560.  *****************************************************************************/
  1561.  
  1562. struct TQ3PolygonData {
  1563.     unsigned long                     numVertices;
  1564.     TQ3Vertex3D *                    vertices;
  1565.     TQ3AttributeSet                 polygonAttributeSet;
  1566. };
  1567. typedef struct TQ3PolygonData            TQ3PolygonData;
  1568. /******************************************************************************
  1569.  **                                                                             **
  1570.  **                            Polygon Routines                                 **
  1571.  **                                                                             **
  1572.  *****************************************************************************/
  1573. EXTERN_API_C( TQ3GeometryObject )
  1574. Q3Polygon_New                    (const TQ3PolygonData *    polygonData);
  1575.  
  1576. EXTERN_API_C( TQ3Status )
  1577. Q3Polygon_Submit                (const TQ3PolygonData *    polygonData,
  1578.                                  TQ3ViewObject             view);
  1579.  
  1580. EXTERN_API_C( TQ3Status )
  1581. Q3Polygon_SetData                (TQ3GeometryObject         polygon,
  1582.                                  const TQ3PolygonData *    polygonData);
  1583.  
  1584. EXTERN_API_C( TQ3Status )
  1585. Q3Polygon_GetData                (TQ3GeometryObject         polygon,
  1586.                                  TQ3PolygonData *        polygonData);
  1587.  
  1588. EXTERN_API_C( TQ3Status )
  1589. Q3Polygon_EmptyData                (TQ3PolygonData *        polygonData);
  1590.  
  1591. EXTERN_API_C( TQ3Status )
  1592. Q3Polygon_GetVertexPosition        (TQ3GeometryObject         polygon,
  1593.                                  unsigned long             index,
  1594.                                  TQ3Point3D *            point);
  1595.  
  1596. EXTERN_API_C( TQ3Status )
  1597. Q3Polygon_SetVertexPosition        (TQ3GeometryObject         polygon,
  1598.                                  unsigned long             index,
  1599.                                  const TQ3Point3D *        point);
  1600.  
  1601. EXTERN_API_C( TQ3Status )
  1602. Q3Polygon_GetVertexAttributeSet    (TQ3GeometryObject         polygon,
  1603.                                  unsigned long             index,
  1604.                                  TQ3AttributeSet *        attributeSet);
  1605.  
  1606. EXTERN_API_C( TQ3Status )
  1607. Q3Polygon_SetVertexAttributeSet    (TQ3GeometryObject         polygon,
  1608.                                  unsigned long             index,
  1609.                                  TQ3AttributeSet         attributeSet);
  1610.  
  1611.  
  1612.  
  1613.  
  1614. /******************************************************************************
  1615.  **                                                                             **
  1616.  **                        Polyhedron Data Structure Definitions                 **
  1617.  **                                                                             **
  1618.  *****************************************************************************/
  1619.  
  1620. enum TQ3PolyhedronEdgeMasks {
  1621.     kQ3PolyhedronEdgeNone        = 0,
  1622.     kQ3PolyhedronEdge01            = 1 << 0,
  1623.     kQ3PolyhedronEdge12            = 1 << 1,
  1624.     kQ3PolyhedronEdge20            = 1 << 2,
  1625.     kQ3PolyhedronEdgeAll        = kQ3PolyhedronEdge01 | kQ3PolyhedronEdge12 | kQ3PolyhedronEdge20
  1626. };
  1627. typedef enum TQ3PolyhedronEdgeMasks TQ3PolyhedronEdgeMasks;
  1628.  
  1629.  
  1630. typedef unsigned long                     TQ3PolyhedronEdge;
  1631.  
  1632. struct TQ3PolyhedronEdgeData {
  1633.     unsigned long                     vertexIndices[2];
  1634.     unsigned long                     triangleIndices[2];
  1635.     TQ3AttributeSet                 edgeAttributeSet;
  1636. };
  1637. typedef struct TQ3PolyhedronEdgeData    TQ3PolyhedronEdgeData;
  1638.  
  1639. struct TQ3PolyhedronTriangleData {
  1640.     unsigned long                     vertexIndices[3];
  1641.     TQ3PolyhedronEdge                 edgeFlag;
  1642.     TQ3AttributeSet                 triangleAttributeSet;
  1643. };
  1644. typedef struct TQ3PolyhedronTriangleData TQ3PolyhedronTriangleData;
  1645.  
  1646. struct TQ3PolyhedronData {
  1647.     unsigned long                     numVertices;
  1648.     TQ3Vertex3D *                    vertices;
  1649.     unsigned long                     numEdges;
  1650.     TQ3PolyhedronEdgeData *            edges;
  1651.     unsigned long                     numTriangles;
  1652.     TQ3PolyhedronTriangleData *        triangles;
  1653.     TQ3AttributeSet                 polyhedronAttributeSet;
  1654. };
  1655. typedef struct TQ3PolyhedronData        TQ3PolyhedronData;
  1656. /******************************************************************************
  1657.  **                                                                             **
  1658.  **                                Polyhedron Routines                             **
  1659.  **                                                                             **
  1660.  *****************************************************************************/
  1661. EXTERN_API_C( TQ3GeometryObject )
  1662. Q3Polyhedron_New                (const TQ3PolyhedronData * polyhedronData);
  1663.  
  1664. EXTERN_API_C( TQ3Status )
  1665. Q3Polyhedron_Submit                (const TQ3PolyhedronData * polyhedronData,
  1666.                                  TQ3ViewObject             view);
  1667.  
  1668. EXTERN_API_C( TQ3Status )
  1669. Q3Polyhedron_SetData            (TQ3GeometryObject         polyhedron,
  1670.                                  const TQ3PolyhedronData * polyhedronData);
  1671.  
  1672. EXTERN_API_C( TQ3Status )
  1673. Q3Polyhedron_GetData            (TQ3GeometryObject         polyhedron,
  1674.                                  TQ3PolyhedronData *    polyhedronData);
  1675.  
  1676. EXTERN_API_C( TQ3Status )
  1677. Q3Polyhedron_EmptyData            (TQ3PolyhedronData *    polyhedronData);
  1678.  
  1679. EXTERN_API_C( TQ3Status )
  1680. Q3Polyhedron_SetVertexPosition    (TQ3GeometryObject         polyhedron,
  1681.                                  unsigned long             index,
  1682.                                  const TQ3Point3D *        point);
  1683.  
  1684. EXTERN_API_C( TQ3Status )
  1685. Q3Polyhedron_GetVertexPosition    (TQ3GeometryObject         polyhedron,
  1686.                                  unsigned long             index,
  1687.                                  TQ3Point3D *            point);
  1688.  
  1689. EXTERN_API_C( TQ3Status )
  1690. Q3Polyhedron_SetVertexAttributeSet (TQ3GeometryObject     polyhedron,
  1691.                                  unsigned long             index,
  1692.                                  TQ3AttributeSet         attributeSet);
  1693.  
  1694. EXTERN_API_C( TQ3Status )
  1695. Q3Polyhedron_GetVertexAttributeSet (TQ3GeometryObject     polyhedron,
  1696.                                  unsigned long             index,
  1697.                                  TQ3AttributeSet *        attributeSet);
  1698.  
  1699. EXTERN_API_C( TQ3Status )
  1700. Q3Polyhedron_GetTriangleData    (TQ3GeometryObject         polyhedron,
  1701.                                  unsigned long             triangleIndex,
  1702.                                  TQ3PolyhedronTriangleData * triangleData);
  1703.  
  1704. EXTERN_API_C( TQ3Status )
  1705. Q3Polyhedron_SetTriangleData    (TQ3GeometryObject         polyhedron,
  1706.                                  unsigned long             triangleIndex,
  1707.                                  const TQ3PolyhedronTriangleData * triangleData);
  1708.  
  1709. EXTERN_API_C( TQ3Status )
  1710. Q3Polyhedron_GetEdgeData        (TQ3GeometryObject         polyhedron,
  1711.                                  unsigned long             edgeIndex,
  1712.                                  TQ3PolyhedronEdgeData * edgeData);
  1713.  
  1714. EXTERN_API_C( TQ3Status )
  1715. Q3Polyhedron_SetEdgeData        (TQ3GeometryObject         polyhedron,
  1716.                                  unsigned long             edgeIndex,
  1717.                                  const TQ3PolyhedronEdgeData * edgeData);
  1718.  
  1719.  
  1720.  
  1721.  
  1722. /******************************************************************************
  1723.  **                                                                             **
  1724.  **                        PolyLine Data Structure Definitions                     **
  1725.  **                                                                             **
  1726.  *****************************************************************************/
  1727.  
  1728. struct TQ3PolyLineData {
  1729.     unsigned long                     numVertices;
  1730.     TQ3Vertex3D *                    vertices;
  1731.     TQ3AttributeSet *                segmentAttributeSet;
  1732.     TQ3AttributeSet                 polyLineAttributeSet;
  1733. };
  1734. typedef struct TQ3PolyLineData            TQ3PolyLineData;
  1735. /******************************************************************************
  1736.  **                                                                             **
  1737.  **                            PolyLine Routines                                 **
  1738.  **                                                                             **
  1739.  *****************************************************************************/
  1740. EXTERN_API_C( TQ3GeometryObject )
  1741. Q3PolyLine_New                    (const TQ3PolyLineData * polylineData);
  1742.  
  1743. EXTERN_API_C( TQ3Status )
  1744. Q3PolyLine_Submit                (const TQ3PolyLineData * polyLineData,
  1745.                                  TQ3ViewObject             view);
  1746.  
  1747. EXTERN_API_C( TQ3Status )
  1748. Q3PolyLine_SetData                (TQ3GeometryObject         polyLine,
  1749.                                  const TQ3PolyLineData * polyLineData);
  1750.  
  1751. EXTERN_API_C( TQ3Status )
  1752. Q3PolyLine_GetData                (TQ3GeometryObject         polyLine,
  1753.                                  TQ3PolyLineData *        polyLineData);
  1754.  
  1755. EXTERN_API_C( TQ3Status )
  1756. Q3PolyLine_EmptyData            (TQ3PolyLineData *        polyLineData);
  1757.  
  1758. EXTERN_API_C( TQ3Status )
  1759. Q3PolyLine_GetVertexPosition    (TQ3GeometryObject         polyLine,
  1760.                                  unsigned long             index,
  1761.                                  TQ3Point3D *            position);
  1762.  
  1763. EXTERN_API_C( TQ3Status )
  1764. Q3PolyLine_SetVertexPosition    (TQ3GeometryObject         polyLine,
  1765.                                  unsigned long             index,
  1766.                                  const TQ3Point3D *        position);
  1767.  
  1768. EXTERN_API_C( TQ3Status )
  1769. Q3PolyLine_GetVertexAttributeSet (TQ3GeometryObject     polyLine,
  1770.                                  unsigned long             index,
  1771.                                  TQ3AttributeSet *        attributeSet);
  1772.  
  1773. EXTERN_API_C( TQ3Status )
  1774. Q3PolyLine_SetVertexAttributeSet (TQ3GeometryObject     polyLine,
  1775.                                  unsigned long             index,
  1776.                                  TQ3AttributeSet         attributeSet);
  1777.  
  1778. EXTERN_API_C( TQ3Status )
  1779. Q3PolyLine_GetSegmentAttributeSet (TQ3GeometryObject     polyLine,
  1780.                                  unsigned long             index,
  1781.                                  TQ3AttributeSet *        attributeSet);
  1782.  
  1783. EXTERN_API_C( TQ3Status )
  1784. Q3PolyLine_SetSegmentAttributeSet (TQ3GeometryObject     polyLine,
  1785.                                  unsigned long             index,
  1786.                                  TQ3AttributeSet         attributeSet);
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792. /******************************************************************************
  1793.  **                                                                             **
  1794.  **                        Torus Data Structure Definitions                     **
  1795.  **                                                                             **
  1796.  *****************************************************************************/
  1797.  
  1798. struct TQ3TorusData {
  1799.     TQ3Point3D                         origin;
  1800.     TQ3Vector3D                     orientation;
  1801.     TQ3Vector3D                     majorRadius;
  1802.     TQ3Vector3D                     minorRadius;
  1803.     float                             ratio;
  1804.     float                             uMin;
  1805.     float                             uMax;
  1806.     float                             vMin;
  1807.     float                             vMax;
  1808.     TQ3EndCap                         caps;
  1809.     TQ3AttributeSet                 interiorAttributeSet;
  1810.     TQ3AttributeSet                 torusAttributeSet;
  1811. };
  1812. typedef struct TQ3TorusData                TQ3TorusData;
  1813. /******************************************************************************
  1814.  **                                                                             **
  1815.  **                                Torus Routines                                 **
  1816.  **                                                                             **
  1817.  *****************************************************************************/
  1818. EXTERN_API_C( TQ3GeometryObject )
  1819. Q3Torus_New                        (const TQ3TorusData *    torusData);
  1820.  
  1821. EXTERN_API_C( TQ3Status )
  1822. Q3Torus_Submit                    (const TQ3TorusData *    torusData,
  1823.                                  TQ3ViewObject             view);
  1824.  
  1825. EXTERN_API_C( TQ3Status )
  1826. Q3Torus_SetData                    (TQ3GeometryObject         torus,
  1827.                                  const TQ3TorusData *    torusData);
  1828.  
  1829. EXTERN_API_C( TQ3Status )
  1830. Q3Torus_GetData                    (TQ3GeometryObject         torus,
  1831.                                  TQ3TorusData *            torusData);
  1832.  
  1833. EXTERN_API_C( TQ3Status )
  1834. Q3Torus_SetOrigin                (TQ3GeometryObject         torus,
  1835.                                  const TQ3Point3D *        origin);
  1836.  
  1837. EXTERN_API_C( TQ3Status )
  1838. Q3Torus_SetOrientation            (TQ3GeometryObject         torus,
  1839.                                  const TQ3Vector3D *    orientation);
  1840.  
  1841. EXTERN_API_C( TQ3Status )
  1842. Q3Torus_SetMajorRadius            (TQ3GeometryObject         torus,
  1843.                                  const TQ3Vector3D *    majorRadius);
  1844.  
  1845. EXTERN_API_C( TQ3Status )
  1846. Q3Torus_SetMinorRadius            (TQ3GeometryObject         torus,
  1847.                                  const TQ3Vector3D *    minorRadius);
  1848.  
  1849. EXTERN_API_C( TQ3Status )
  1850. Q3Torus_SetRatio                (TQ3GeometryObject         torus,
  1851.                                  float                     ratio);
  1852.  
  1853. EXTERN_API_C( TQ3Status )
  1854. Q3Torus_GetOrigin                (TQ3GeometryObject         torus,
  1855.                                  TQ3Point3D *            origin);
  1856.  
  1857. EXTERN_API_C( TQ3Status )
  1858. Q3Torus_GetOrientation            (TQ3GeometryObject         torus,
  1859.                                  TQ3Vector3D *            orientation);
  1860.  
  1861. EXTERN_API_C( TQ3Status )
  1862. Q3Torus_GetMajorRadius            (TQ3GeometryObject         torus,
  1863.                                  TQ3Vector3D *            majorRadius);
  1864.  
  1865. EXTERN_API_C( TQ3Status )
  1866. Q3Torus_GetMinorRadius            (TQ3GeometryObject         torus,
  1867.                                  TQ3Vector3D *            minorRadius);
  1868.  
  1869. EXTERN_API_C( TQ3Status )
  1870. Q3Torus_GetRatio                (TQ3GeometryObject         torus,
  1871.                                  float *                ratio);
  1872.  
  1873. EXTERN_API_C( TQ3Status )
  1874. Q3Torus_EmptyData                (TQ3TorusData *            torusData);
  1875.  
  1876.  
  1877.  
  1878.  
  1879. /******************************************************************************
  1880.  **                                                                             **
  1881.  **                        Triangle Data Structure Definitions                     **
  1882.  **                                                                             **
  1883.  *****************************************************************************/
  1884.  
  1885. struct TQ3TriangleData {
  1886.     TQ3Vertex3D                     vertices[3];
  1887.     TQ3AttributeSet                 triangleAttributeSet;
  1888. };
  1889. typedef struct TQ3TriangleData            TQ3TriangleData;
  1890. /******************************************************************************
  1891.  **                                                                             **
  1892.  **                            Triangle Routines                                 **
  1893.  **                                                                             **
  1894.  *****************************************************************************/
  1895. EXTERN_API_C( TQ3GeometryObject )
  1896. Q3Triangle_New                    (const TQ3TriangleData * triangleData);
  1897.  
  1898. EXTERN_API_C( TQ3Status )
  1899. Q3Triangle_Submit                (const TQ3TriangleData * triangleData,
  1900.                                  TQ3ViewObject             view);
  1901.  
  1902. EXTERN_API_C( TQ3Status )
  1903. Q3Triangle_SetData                (TQ3GeometryObject         triangle,
  1904.                                  const TQ3TriangleData * triangleData);
  1905.  
  1906. EXTERN_API_C( TQ3Status )
  1907. Q3Triangle_GetData                (TQ3GeometryObject         triangle,
  1908.                                  TQ3TriangleData *        triangleData);
  1909.  
  1910. EXTERN_API_C( TQ3Status )
  1911. Q3Triangle_EmptyData            (TQ3TriangleData *        triangleData);
  1912.  
  1913. EXTERN_API_C( TQ3Status )
  1914. Q3Triangle_GetVertexPosition    (TQ3GeometryObject         triangle,
  1915.                                  unsigned long             index,
  1916.                                  TQ3Point3D *            point);
  1917.  
  1918. EXTERN_API_C( TQ3Status )
  1919. Q3Triangle_SetVertexPosition    (TQ3GeometryObject         triangle,
  1920.                                  unsigned long             index,
  1921.                                  const TQ3Point3D *        point);
  1922.  
  1923. EXTERN_API_C( TQ3Status )
  1924. Q3Triangle_GetVertexAttributeSet (TQ3GeometryObject     triangle,
  1925.                                  unsigned long             index,
  1926.                                  TQ3AttributeSet *        attributeSet);
  1927.  
  1928. EXTERN_API_C( TQ3Status )
  1929. Q3Triangle_SetVertexAttributeSet (TQ3GeometryObject     triangle,
  1930.                                  unsigned long             index,
  1931.                                  TQ3AttributeSet         attributeSet);
  1932.  
  1933.  
  1934.  
  1935.  
  1936. /******************************************************************************
  1937.  **                                                                             **
  1938.  **                        TriGrid Data Structure Definitions                     **
  1939.  **                                                                             **
  1940.  *****************************************************************************/
  1941.  
  1942. struct TQ3TriGridData {
  1943.     unsigned long                     numRows;
  1944.     unsigned long                     numColumns;
  1945.     TQ3Vertex3D *                    vertices;
  1946.     TQ3AttributeSet *                facetAttributeSet;
  1947.     TQ3AttributeSet                 triGridAttributeSet;
  1948. };
  1949. typedef struct TQ3TriGridData            TQ3TriGridData;
  1950. /******************************************************************************
  1951.  **                                                                             **
  1952.  **                                TriGrid Routines                             **
  1953.  **                                                                             **
  1954.  *****************************************************************************/
  1955. EXTERN_API_C( TQ3GeometryObject )
  1956. Q3TriGrid_New                    (const TQ3TriGridData *    triGridData);
  1957.  
  1958. EXTERN_API_C( TQ3Status )
  1959. Q3TriGrid_Submit                (const TQ3TriGridData *    triGridData,
  1960.                                  TQ3ViewObject             view);
  1961.  
  1962. EXTERN_API_C( TQ3Status )
  1963. Q3TriGrid_SetData                (TQ3GeometryObject         triGrid,
  1964.                                  const TQ3TriGridData *    triGridData);
  1965.  
  1966. EXTERN_API_C( TQ3Status )
  1967. Q3TriGrid_GetData                (TQ3GeometryObject         triGrid,
  1968.                                  TQ3TriGridData *        triGridData);
  1969.  
  1970. EXTERN_API_C( TQ3Status )
  1971. Q3TriGrid_EmptyData                (TQ3TriGridData *        triGridData);
  1972.  
  1973. EXTERN_API_C( TQ3Status )
  1974. Q3TriGrid_GetVertexPosition        (TQ3GeometryObject         triGrid,
  1975.                                  unsigned long             rowIndex,
  1976.                                  unsigned long             columnIndex,
  1977.                                  TQ3Point3D *            position);
  1978.  
  1979. EXTERN_API_C( TQ3Status )
  1980. Q3TriGrid_SetVertexPosition        (TQ3GeometryObject         triGrid,
  1981.                                  unsigned long             rowIndex,
  1982.                                  unsigned long             columnIndex,
  1983.                                  const TQ3Point3D *        position);
  1984.  
  1985. EXTERN_API_C( TQ3Status )
  1986. Q3TriGrid_GetVertexAttributeSet    (TQ3GeometryObject         triGrid,
  1987.                                  unsigned long             rowIndex,
  1988.                                  unsigned long             columnIndex,
  1989.                                  TQ3AttributeSet *        attributeSet);
  1990.  
  1991. EXTERN_API_C( TQ3Status )
  1992. Q3TriGrid_SetVertexAttributeSet    (TQ3GeometryObject         triGrid,
  1993.                                  unsigned long             rowIndex,
  1994.                                  unsigned long             columnIndex,
  1995.                                  TQ3AttributeSet         attributeSet);
  1996.  
  1997. EXTERN_API_C( TQ3Status )
  1998. Q3TriGrid_GetFacetAttributeSet    (TQ3GeometryObject         triGrid,
  1999.                                  unsigned long             faceIndex,
  2000.                                  TQ3AttributeSet *        facetAttributeSet);
  2001.  
  2002. EXTERN_API_C( TQ3Status )
  2003. Q3TriGrid_SetFacetAttributeSet    (TQ3GeometryObject         triGrid,
  2004.                                  unsigned long             faceIndex,
  2005.                                  TQ3AttributeSet         facetAttributeSet);
  2006.  
  2007.  
  2008.  
  2009.  
  2010. /******************************************************************************
  2011.  **                                                                             **
  2012.  **                        TriMesh Data Structure Definitions                     **
  2013.  **                                                                             **
  2014.  *****************************************************************************/
  2015.  
  2016. struct TQ3TriMeshTriangleData {
  2017.     unsigned long                     pointIndices[3];
  2018. };
  2019. typedef struct TQ3TriMeshTriangleData    TQ3TriMeshTriangleData;
  2020.  
  2021. struct TQ3TriMeshEdgeData {
  2022.     unsigned long                     pointIndices[2];
  2023.     unsigned long                     triangleIndices[2];
  2024. };
  2025. typedef struct TQ3TriMeshEdgeData        TQ3TriMeshEdgeData;
  2026.  
  2027. struct TQ3TriMeshAttributeData {
  2028.     TQ3AttributeType                 attributeType;                /* The type of attribute          */
  2029.     void *                            data;                        /* Pointer to the contiguous     */
  2030.                                                                 /* attribute data.                 */
  2031.     char *                            attributeUseArray;            /* This is only used with custom */
  2032.                                                                 /* attributes                      */
  2033. };
  2034. typedef struct TQ3TriMeshAttributeData    TQ3TriMeshAttributeData;
  2035.  
  2036. struct TQ3TriMeshData {
  2037.     TQ3AttributeSet                 triMeshAttributeSet;
  2038.  
  2039.     unsigned long                     numTriangles;
  2040.     TQ3TriMeshTriangleData *        triangles;
  2041.  
  2042.     unsigned long                     numTriangleAttributeTypes;
  2043.     TQ3TriMeshAttributeData *        triangleAttributeTypes;
  2044.  
  2045.     unsigned long                     numEdges;
  2046.     TQ3TriMeshEdgeData *            edges;
  2047.  
  2048.     unsigned long                     numEdgeAttributeTypes;
  2049.     TQ3TriMeshAttributeData *        edgeAttributeTypes;
  2050.  
  2051.     unsigned long                     numPoints;
  2052.     TQ3Point3D *                    points;
  2053.  
  2054.     unsigned long                     numVertexAttributeTypes;
  2055.     TQ3TriMeshAttributeData *        vertexAttributeTypes;
  2056.  
  2057.     TQ3BoundingBox                     bBox;
  2058. };
  2059. typedef struct TQ3TriMeshData            TQ3TriMeshData;
  2060. /******************************************************************************
  2061.  **                                                                             **
  2062.  **                            TriMesh Routines                                 **
  2063.  **                                                                             **
  2064.  *****************************************************************************/
  2065. EXTERN_API_C( TQ3GeometryObject )
  2066. Q3TriMesh_New                    (const TQ3TriMeshData *    triMeshData);
  2067.  
  2068. EXTERN_API_C( TQ3Status )
  2069. Q3TriMesh_Submit                (const TQ3TriMeshData *    triMeshData,
  2070.                                  TQ3ViewObject             view);
  2071.  
  2072. EXTERN_API_C( TQ3Status )
  2073. Q3TriMesh_SetData                (TQ3GeometryObject         triMesh,
  2074.                                  const TQ3TriMeshData *    triMeshData);
  2075.  
  2076. EXTERN_API_C( TQ3Status )
  2077. Q3TriMesh_GetData                (TQ3GeometryObject         triMesh,
  2078.                                  TQ3TriMeshData *        triMeshData);
  2079.  
  2080. EXTERN_API_C( TQ3Status )
  2081. Q3TriMesh_EmptyData                (TQ3TriMeshData *        triMeshData);
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087. #if PRAGMA_ENUM_ALWAYSINT
  2088.     #pragma enumsalwaysint reset
  2089. #elif PRAGMA_ENUM_OPTIONS
  2090.     #pragma option enum=reset
  2091. #elif defined(PRAGMA_ENUM_PACK__QD3DGEOMETRY__)
  2092.     #pragma options(pack_enums)
  2093. #endif
  2094.  
  2095. #if PRAGMA_STRUCT_ALIGN
  2096.     #pragma options align=reset
  2097. #elif PRAGMA_STRUCT_PACKPUSH
  2098.     #pragma pack(pop)
  2099. #elif PRAGMA_STRUCT_PACK
  2100.     #pragma pack()
  2101. #endif
  2102.  
  2103. #ifdef PRAGMA_IMPORT_OFF
  2104. #pragma import off
  2105. #elif PRAGMA_IMPORT
  2106. #pragma import reset
  2107. #endif
  2108.  
  2109. #ifdef __cplusplus
  2110. }
  2111. #endif
  2112.  
  2113. #endif /* __QD3DGEOMETRY__ */
  2114.  
  2115.